{
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "# 一、Numpy基础\n",
    "## 1.1 Numpy是什么\n",
    "Numpy（Numerical Python）是一个开源的Python科学计算库，用于快速处理任意维度的数组。\n",
    "Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务，使用Numpy比直接使用Python要简洁的多。\n",
    "Numpy使用ndarray对象来处理多维数组，该对象是一个快速而灵活的大数据容器。\n",
    "NumPy提供了一个N维数组类型ndarray，它描述了相同类型的“items”的集合。"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "4f9ba8336c5cf9fa"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([[80, 89, 86, 67, 79],\n       [78, 97, 89, 67, 81],\n       [90, 94, 78, 67, 74],\n       [91, 91, 90, 67, 69],\n       [76, 87, 75, 67, 86],\n       [70, 79, 84, 67, 84],\n       [94, 92, 93, 67, 64],\n       [86, 85, 83, 67, 80]])"
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "score = np.array(\n",
    "[[80, 89, 86, 67, 79],\n",
    "[78, 97, 89, 67, 81],\n",
    "[90, 94, 78, 67, 74],\n",
    "[91, 91, 90, 67, 69],\n",
    "[76, 87, 75, 67, 86],\n",
    "[70, 79, 84, 67, 84],\n",
    "[94, 92, 93, 67, 64],\n",
    "[86, 85, 83, 67, 80]])\n",
    "\n",
    "score"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:35:46.577170Z",
     "start_time": "2024-08-20T11:35:46.568701Z"
    }
   },
   "id": "a7f285b7885fc94c",
   "execution_count": 2
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "(8, 5)"
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score.size\n",
    "score.shape"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:36:23.209022Z",
     "start_time": "2024-08-20T11:36:23.198044Z"
    }
   },
   "id": "9b75efa987bf0401",
   "execution_count": 5
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 1.2 Numpy的优势\n",
    "### Numpy专门针对ndarray的操作和运算进行了设计，所以数组的存储效率和输入输出性能远优于Python中的嵌套列表，数组越大，Numpy的优势就越明显。\n",
    "### ndarray在存储数据的时候，数据与数据的地址都是连续的，这样就给使得批量操作数组元素时速度更快。这是因为ndarray中的所有元素的类型都是相同的，而Python列表中的元素类型是任意的，所以ndarray在存储元素时内存可以连续，而python原生list就只能通过寻址方式找到下一个元素，这虽然也导致了在通用性能方面Numpy的ndarray不及Python原生list，但在科学计算中，Numpy的ndarray就可以省掉很多循环语句，代码使用方面比Python原生list简单的多。\n",
    "### numpy内置了并行运算功能，当系统有多个核心时，做某种计算时，numpy会自动做并行计算（向量化运算）。\n",
    "### Numpy底层使用C语言编写，内部解除了GIL（全局解释器锁），其对数组的操作速度不受Python解释器的限制，所以，其效率远高于纯Python代码。"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "b3f689eab57c5f87"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 7.92 ms, sys: 2.02 ms, total: 9.94 ms\n",
      "Wall time: 9.95 ms\n",
      "CPU times: user 361 µs, sys: 11 µs, total: 372 µs\n",
      "Wall time: 378 µs\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "import time\n",
    "import numpy as np\n",
    "a = []\n",
    "for i in range(1000000):\n",
    "    a.append(random.random())\n",
    "\n",
    "%time sum1=sum(a)\n",
    "b = np.array(a)\n",
    "%time sum2=np.sum(b)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:37:28.706624Z",
     "start_time": "2024-08-20T11:37:28.492054Z"
    }
   },
   "id": "1bf7d52eafaf8bd2",
   "execution_count": 6
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 二、N维数组-ndarray\n",
    "## 2.1 ndarray\n",
    "### 2.1.1 基本属性\n",
    "#### ndarray.shape  数组维度的元组\n",
    "#### ndarray.ndim   数组维数\n",
    "#### ndarray.size   数组中元素的数量\n",
    "#### ndarray.itemsize 一个数据元素的长度(字节）\n",
    "#### ndarray.dtype   数组元素的类型"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "27df7156208319d3"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(3,) 1 3 8 int64\n",
      "None\n",
      "(2, 3) 2 6 8 int64\n",
      "None\n",
      "(3,) 1 3 8 object\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "def getproperites(array):\n",
    "    print(array.shape,array.ndim,array.size,array.itemsize,array.dtype)\n",
    "a = np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 0]],[[9, 10, 11], [12, 13, 14]],[]],dtype=object)\n",
    "b = np.array([1, 2, 3])\n",
    "c = np.array([[4, 5, 6], [7, 8, 0]])\n",
    "\n",
    "print(getproperites(b))\n",
    "print(getproperites(c))\n",
    "print(getproperites(a))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:39:00.155879Z",
     "start_time": "2024-08-20T11:39:00.149738Z"
    }
   },
   "id": "4dfe7ee2ddef0009",
   "execution_count": 7
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "(3,)"
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a.shape"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:40:27.431510Z",
     "start_time": "2024-08-20T11:40:27.425769Z"
    }
   },
   "id": "5433574f0e5d877e",
   "execution_count": 8
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([[[list([[1, 2, 3], [4, 5, 6], [7, 8, 0]])],\n        [list([[9, 10, 11], [12, 13, 14]])],\n        [list([])]]], dtype=object)"
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a.reshape(1,3,1)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:41:08.601983Z",
     "start_time": "2024-08-20T11:41:08.597062Z"
    }
   },
   "id": "3294b920ffeb585b",
   "execution_count": 11
  },
  {
   "cell_type": "code",
   "outputs": [],
   "source": [
    "a1 = np.ones([4,8])"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:42:46.484103Z",
     "start_time": "2024-08-20T11:42:46.472590Z"
    }
   },
   "id": "76aceb43e20f193d",
   "execution_count": 12
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([[1., 1., 1., 1., 1., 1., 1., 1.],\n       [1., 1., 1., 1., 1., 1., 1., 1.],\n       [1., 1., 1., 1., 1., 1., 1., 1.],\n       [1., 1., 1., 1., 1., 1., 1., 1.]])"
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a1"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:42:49.414959Z",
     "start_time": "2024-08-20T11:42:49.407566Z"
    }
   },
   "id": "77039102a55e90f6",
   "execution_count": 13
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([[0., 0., 0., 0., 0., 0., 0., 0.],\n       [0., 0., 0., 0., 0., 0., 0., 0.],\n       [0., 0., 0., 0., 0., 0., 0., 0.],\n       [0., 0., 0., 0., 0., 0., 0., 0.]])"
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a2 = np.zeros([4,8])\n",
    "a2"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:43:24.706556Z",
     "start_time": "2024-08-20T11:43:24.700631Z"
    }
   },
   "id": "b8df9512e74aa722",
   "execution_count": 14
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([  0.,  10.,  20.,  30.,  40.,  50.,  60.,  70.,  80.,  90., 100.])"
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a3 = np.linspace(0,100,11)\n",
    "a3"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:45:23.123646Z",
     "start_time": "2024-08-20T11:45:23.119437Z"
    }
   },
   "id": "df1b77419c759caa",
   "execution_count": 21
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42,\n       44, 46, 48])"
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a4 = np.arange(10,50,2)\n",
    "a4"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:46:30.033758Z",
     "start_time": "2024-08-20T11:46:30.020464Z"
    }
   },
   "id": "336ea01a3662a055",
   "execution_count": 22
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([1.00000000e-03, 3.98107171e-03, 1.58489319e-02, 6.30957344e-02,\n       2.51188643e-01, 1.00000000e+00, 3.98107171e+00, 1.58489319e+01,\n       6.30957344e+01, 2.51188643e+02, 1.00000000e+03])"
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a5 = np.logspace(-3,3,11)\n",
    "a5"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:47:17.705899Z",
     "start_time": "2024-08-20T11:47:17.700526Z"
    }
   },
   "id": "27ea9a44b0f919df",
   "execution_count": 23
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 2000x1000 with 1 Axes>",
      "image/png": "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P/rRj0au6+/vL3AyaN7Ro0fjxz/+cRw9ejTOnTsXBw8ejIiIa665Ji677LJih4MJbN68Oe666664/vrrR95td/To0bj33nuLHg2a8s4778Rrr7028vnhw4fj4MGDcfnll8fVV19d4GTQnI0bN8auXbviG9/4RvT29o68G2/BggUxd+7cgqeDxj3yyCOxfv36WLx4cZw+fTp2794dL7zwQjz//PNFjwYN6+3tPe9vKl166aVxxRVX+FtLzDp/+Id/GLfeemtcffXVceLEiXj00Ufj1KlTcffddxc9GrOA6AFN2LNnT7z22mvx2muvnfe2/VqtVtBU0Jo//uM/HvO7MH/zN38zIiK+/e1vx5o1awqaCib3e7/3e/G///u/8ad/+qfxxhtvxLJly+Kf/umf4pd+6ZeKHg2acuDAgbj55ptHPt+8eXNERNx9993x9NNPFzQVNG/nzp0REec9d3jqqafiM5/5zMwPBC16880346677oo33ngjFixYEMuXL4/nn38+1q5dW/RoABek//7v/47f//3fj7feeit+8Rd/MX7rt34rXn75Za/9aEip5ie1AAAAAABAAv4YAQAAAAAAkILoAQAAAAAApCB6AAAAAAAAKYgeAAAAAABACqIHAAAAAACQgugBAAAAAACkIHoAAAAAAAApiB4AAAAAAEAKogcAAAAAAJCC6AEAAAAAAKQgegAAAAAAACn8P1yC2NQofnKLAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "x1 = np.random.normal(1.75,1,10000)\n",
    "plt.figure(figsize=(20,10),dpi=100)\n",
    "plt.hist(x1,1000)\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:50:43.144804Z",
     "start_time": "2024-08-20T11:50:41.530122Z"
    }
   },
   "id": "5e2e2b037f9beb4d",
   "execution_count": 26
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([[ 1.55435956,  0.67075667, -0.33555657, -0.12780782,  1.24648824],\n       [-1.17685257, -0.27273324,  1.24464191, -0.81949756, -0.46678389],\n       [-0.28860466, -0.91142311, -0.74569607,  1.21027553, -0.1689823 ],\n       [-0.91924538, -1.58366587,  0.26188046, -1.36381789,  0.4158976 ]])"
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change = np.random.normal(0,1,(4,5))\n",
    "stock_change"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:52:24.854232Z",
     "start_time": "2024-08-20T11:52:24.850536Z"
    }
   },
   "id": "8fd061b013eaf192",
   "execution_count": 28
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([ 0.91682437, -0.68534124,  0.90649874, ..., -0.53488848,\n       -0.53214375,  0.79552224])"
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 2000x1000 with 1 Axes>",
      "image/png": "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ICE8AQAAAAAASAhPAAAAAAAAEsITAAAAAACAhPAEAAAAAAAgITwBAAAAAABICE8AAAAAAAASwhMAAAAAAICE8AQAAAAAACAhPAEAAAAAAEgITwAAAAAAABLCEwAAAAAAgITwBAAAAAAAICE8AQAAAAAASAhPAAAAAAAAEsITAAAAAACAhPAEAAAAAAAgITwBAAAAAABICE8AAAAAAAASwhMAAAAAAICE8AQAAAAAACAhPAEAAAAAAEgITwAAAAAAABLCEwAAAAAAgITwBAAAAAAAICE8AQAAAAAASAhPAAAAAAAAEsITAAAAAACAhPAEAAAAAAAgITwBAAAAAABICE8AAAAAAAASwhMAAAAAAICE8AQAAAAAACAhPAEAAAAAAEgITwAAAAAAABLCEwAAAAAAgITwBAAAAAAAICE8AQAAAAAASAhPAAAAAAAAEsITAAAAAACAhPAEAAAAAAAgITwBAAAAAABICE8AAAAAAAASwhMAAAAAAICE8AQAAAAAACAhPAEAAAAAAEgITwAAAAAAABLCEwAAAAAAgITwBAAAAAAAICE8AQAAAAAASAhPAAAAAAAAEsITAAAAAACAhPAEAAAAAAAgITwBAAAAAABICE8AAAAAAAASwhMAAAAAAICE8AQAAAAAACAhPAEAAAAAAEgITwAAAAAAABLCEwAAAAAAgITwBAAAAAAAICE8AQAAAAAASAhPAAAAAAAAEsITAAAAAACAhPAEAAAAAAAgITwBAAAAAABICE8AAAAAAAASwhMAAAAAAICE8AQAAAAAACAhPAEAAAAAAEgITwAAAAAAABLCEwAAAAAAgITwBAAAAAAAICE8AQAAAAAASAhPAAAAAAAAEsITAAAAAACAhPAEAAAAAAAgITwBAAAAAABICE8AAAAAAAASwhMAAAAAAICE8AQAAAAAACAhPAEAAAAAAEgITwAAAAAAABLCEwAAAAAAgITwBAAAAAAAICE8AQAAAAAASAhPAAAAAAAAEsITAAAAAACAhPAEAAAAAAAgITwBAAAAAABICE8AAAAAAAASwhMAAAAAAICE8AQAAAAAACAhPAEAAAAAAEgITwAAAAAAABLCEwAAAAAAgITwBAAAAAAAICE8AQAAAAAASAhPAAAAAAAAEsITAAAAAACAhPAEAAAAAAAgITwBAAAAAABICE8AAAAAAAASwhMAAAAAAIBEycOTZcuWxctf/vIYPXp0HHfccfH6178+Hn/88aI2WZbF4sWLo729PUaMGBFz5syJxx57rKjNnj174oorrojx48fHqFGj4rzzzounn3661N0FAAAAAAAoUvLwZM2aNfG2t70tvvOd78Tq1avjD3/4Q8ybNy9+97vfFdpcf/31ccMNN8Ty5ctj3bp10dbWFmeffXbs3Lmz0KajoyNWrlwZK1asiIceeih27doV8+fPj/3795e6ywAAAAAAAAVNWZZl5fwDv/71r+O4446LNWvWxJlnnhlZlkV7e3t0dHTEe97znoh4/iqT1tbW+NCHPhSXXXZZdHV1xbHHHht33nlnvPGNb4yIiGeeeSYmTpwYX/nKV+Kcc8454t/dsWNHtLS0RFdXV4wZM6acs5hLkxatqnYXAAAAAAAokyeuO7faXag5/ckNyv7Mk66uroiIGDt2bEREbN68OTo7O2PevHmFNs3NzTF79uxYu3ZtRESsX78+9u3bV9Smvb09pk6dWmhzqD179sSOHTuKfgAAAAAAAPqrrOFJlmXx7ne/O17xilfE1KlTIyKis7MzIiJaW1uL2ra2thZe6+zsjOHDh8cxxxxz2DaHWrZsWbS0tBR+Jk6cWOrZAQAAAAAAGkBZw5O3v/3t8cMf/jA+97nPdXutqamp6P9ZlnWbdqje2lxzzTXR1dVV+NmyZcvAOw4AAAAAADSssoUnV1xxRXz5y1+OBx98MI4//vjC9La2toiIbleQbNu2rXA1SltbW+zduze2b99+2DaHam5ujjFjxhT9AAAAAAAA9FfJw5Msy+Ltb3973HvvvfH1r389Jk+eXPT65MmTo62tLVavXl2Ytnfv3lizZk3MmjUrIiJmzJgRw4YNK2qzdevW2LRpU6ENAAAAAABAOQwt9Ru+7W1vi7vvvju+9KUvxejRowtXmLS0tMSIESOiqakpOjo6YunSpTFlypSYMmVKLF26NEaOHBkXXnhhoe0ll1wSV155ZYwbNy7Gjh0bV111VUybNi3mzp1b6i4DAAAAAAAUlDw8ueWWWyIiYs6cOUXTP/vZz8Zb3vKWiIi4+uqrY/fu3XH55ZfH9u3b47TTTov7778/Ro8eXWh/4403xtChQ2PBggWxe/fuOOuss+L222+PIUOGlLrLAAAAAAAABU1ZlmXV7kQ57NixI1paWqKrq8vzT3owadGqancBAAAAAIAyeeK6c6vdhZrTn9ygbA+MBwAAAAAAyCPhCQAAAAAAQEJ4AgAAAAAAkBCeAAAAAAAAJIQnAAAAAAAACeEJAAAAAABAQngCAAAAAACQEJ4AAAAAAAAkhCcAAAAAAAAJ4QkAAAAAAEBCeAIAAAAAAJAQngAAAAAAACSEJwAAAAAAAAnhCQAAAAAAQEJ4AgAAAAAAkBCeAAAAAAAAJIQnAAAAAAAACeEJAAAAAABAQngCAAAAAACQEJ4AAAAAAAAkhCcAAAAAAAAJ4QkAAAAAAEBCeAIAAAAAAJAQngAAAAAAACSEJwAAAAAAAAnhCQAAAAAAQEJ4AgAAAAAAkBCeAAAAAAAAJIQnAAAAAAAACeEJAAAAAABAQngCAAAAAACQEJ4AAAAAAAAkhCcAAAAAAAAJ4QkAAAAAAEBCeAIAAAAAAJAQngAAAAAAACSEJwAAAAAAAAnhCQAAAAAAQEJ4AgAAAAAAkBCeAAAAAAAAJIQnAAAAAAAACeEJAAAAAABAQngCAAAAAACQEJ4AAAAAAAAkhCcAAAAAAAAJ4QkAAAAAAEBCeAIAAAAAAJAQngAAAAAAACSEJwAAAAAAAAnhCQAAAAAAQEJ4AgAAAAAAkBCeAAAAAAAAJIQnAAAAAAAACeEJAAAAAABAQngCAAAAAACQEJ4AAAAAAAAkhCcAAAAAAAAJ4QkAAAAAAEBCeAIAAAAAAJAQngAAAAAAACSEJwAAAAAAAAnhCQAAAAAAQEJ4AgAAAAAAkBCeAAAAAAAAJIQnAAAAAAAACeEJAAAAAABAQngCAAAAAACQEJ4AAAAAAAAkhCcAAAAAAAAJ4QkAAAAAAEBCeAIAAAAAAJAQngAAAAAAACSEJwAAAAAAAAnhCQAAAAAAQEJ4AgAAAAAAkBCeAAAAAAAAJIQnAAAAAAAACeEJAAAAAABAQngCAAAAAACQEJ4AAAAAAAAkhCcAAAAAAAAJ4QkAAAAAAEBCeAIAAAAAAJAQngAAAAAAACSEJwAAAAAAAAnhCQAAAAAAQEJ4AgAAAAAAkBCeAAAAAAAAJIQnAAAAAAAACeEJAAAAAABAQngCAAAAAACQEJ4AAAAAAAAkhCcAAAAAAAAJ4QkAAAAAAEBCeAIAAAAAAJAQngAAAAAAACSEJwAAAAAAAAnhCQAAAAAAQEJ4AgAAAAAAkBCeAAAAAAAAJIQnAAAAAAAACeEJAAAAAABAQngCAAAAAACQEJ4AAAAAAAAkhCcAAAAAAAAJ4QkAAAAAAEBCeAIAAAAAAJAQngAAAAAAACSEJwAAAAAAAAnhCQAAAAAAQEJ4AgAAAAAAkBCeAAAAAAAAJIQnAAAAAAAACeEJAAAAAABAQngCAAAAAACQEJ4AAAAAAAAkhCcAAAAAAAAJ4QkAAAAAAEBCeAIAAAAAAJAQngAAAAAAACSEJwAAAAAAAImaD08+8YlPxOTJk+Poo4+OGTNmxLe+9a1qdwkAAAAAAKhjNR2e3HPPPdHR0RHXXnttbNiwIV75ylfGa17zmnjqqaeq3TUAAAAAAKBONWVZllW7E4dz2mmnxSmnnBK33HJLYdqLXvSieP3rXx/Lli0rartnz57Ys2dP4f9dXV1xwgknxJYtW2LMmDEV63NeTH3/16rdBQAAAAAAymTTknOq3YWas2PHjpg4cWI8++yz0dLS0mvboRXqU7/t3bs31q9fH4sWLSqaPm/evFi7dm239suWLYslS5Z0mz5x4sSy9REAAAAAAGpRy03V7kHt2rlzZ37Dk9/85jexf//+aG1tLZre2toanZ2d3dpfc8018e53v7vw/wMHDsT//d//xbhx46Kpqans/c2Tg+maq3LII/VLnqlf8kz9kmfqlzxTv+SZ+iXv1DB5pn57lmVZ7Ny5M9rb24/YtmbDk4MODT6yLOsxDGlubo7m5uaiaS94wQvK2bXcGzNmjA2H3FK/5Jn6Jc/UL3mmfskz9UueqV/yTg2TZ+q3uyNdcXJQzT4wfvz48TFkyJBuV5ls27at29UoAAAAAAAApVKz4cnw4cNjxowZsXr16qLpq1evjlmzZlWpVwAAAAAAQL2r6dt2vfvd746FCxfGqaeeGjNnzoxbb701nnrqqXjrW99a7a7lWnNzc7z//e/vdpszyAP1S56pX/JM/ZJn6pc8U7/kmfol79QweaZ+B68py7Ks2p3ozSc+8Ym4/vrrY+vWrTF16tS48cYb48wzz6x2twAAAAAAgDpV8+EJAAAAAABAJdXsM08AAAAAAACqQXgCAAAAAACQEJ4AAAAAAAAkhCcAAAAAAAAJ4Ukd+uAHPxizZs2KkSNHxgte8II+/U6WZbF48eJob2+PESNGxJw5c+Kxxx4rarNnz5644oorYvz48TFq1Kg477zz4umnny7DHNDItm/fHgsXLoyWlpZoaWmJhQsXxrPPPtvr7zQ1NfX48+EPf7jQZs6cOd1ev+CCC8o8NzSagdTvW97ylm61efrppxe1Mf5SCf2t33379sV73vOemDZtWowaNSra29vjb//2b+OZZ54pamf8pVw+8YlPxOTJk+Poo4+OGTNmxLe+9a1e269ZsyZmzJgRRx99dLzwhS+MT37yk93afOELX4gXv/jF0dzcHC9+8Ytj5cqV5eo+Da4/9XvvvffG2WefHccee2yMGTMmZs6cGV/72teK2tx+++09Hg///ve/L/es0ID6U7/f+MY3eqzNn/zkJ0XtjL9USn/qt6fPak1NTfGSl7yk0Mb4S6V885vfjNe+9rXR3t4eTU1N8cUvfvGIv+P4d/CEJ3Vo79698YY3vCH+8R//sc+/c/3118cNN9wQy5cvj3Xr1kVbW1ucffbZsXPnzkKbjo6OWLlyZaxYsSIeeuih2LVrV8yfPz/2799fjtmgQV144YWxcePGuO++++K+++6LjRs3xsKFC3v9na1btxb9fOYzn4mmpqb4m7/5m6J2l156aVG7T33qU+WcFRrQQOo3IuLVr351UW1+5StfKXrd+Esl9Ld+n3vuuXjkkUfive99bzzyyCNx7733xk9/+tM477zzurU1/lJq99xzT3R0dMS1114bGzZsiFe+8pXxmte8Jp566qke22/evDn++q//Ol75ylfGhg0b4p//+Z/jHe94R3zhC18otHn44YfjjW98YyxcuDB+8IMfxMKFC2PBggXx3e9+t1KzRYPob/1+85vfjLPPPju+8pWvxPr16+Ov/uqv4rWvfW1s2LChqN2YMWO6HRcfffTRlZglGkh/6/egxx9/vKg2p0yZUnjN+Eul9Ld+P/axjxXV7ZYtW2Ls2LHxhje8oaid8ZdK+N3vfhcve9nLYvny5X1q7/i3RDLq1mc/+9mspaXliO0OHDiQtbW1Zdddd11h2u9///uspaUl++QnP5llWZY9++yz2bBhw7IVK1YU2vzyl7/MjjrqqOy+++4red9pTD/60Y+yiMi+853vFKY9/PDDWURkP/nJT/r8Pq973euyV73qVUXTZs+enb3zne8sVVehm4HW78UXX5y97nWvO+zrxl8qoVTj7/e+970sIrInn3yyMM34Szn85V/+ZfbWt761aNrJJ5+cLVq0qMf2V199dXbyyScXTbvsssuy008/vfD/BQsWZK9+9auL2pxzzjnZBRdcUKJew/P6W789efGLX5wtWbKk8P++fvaDwepv/T744INZRGTbt28/7Hsaf6mUwY6/K1euzJqamrInnniiMM34SzVERLZy5cpe2zj+LQ1XnhCbN2+Ozs7OmDdvXmFac3NzzJ49O9auXRsREevXr499+/YVtWlvb4+pU6cW2sBgPfzww9HS0hKnnXZaYdrpp58eLS0tfa6zX/3qV7Fq1aq45JJLur32H//xHzF+/Ph4yUteEldddVXRlVUwWIOp32984xtx3HHHxZ//+Z/HpZdeGtu2bSu8ZvylEkox/kZEdHV1RVNTU7fbhhp/KaW9e/fG+vXri8bFiIh58+Ydtl4ffvjhbu3POeec+P73vx/79u3rtY2xllIaSP0e6sCBA7Fz584YO3Zs0fRdu3bFiSeeGMcff3zMnz+/25UpMFiDqd/p06fHhAkT4qyzzooHH3yw6DXjL5VQivH3tttui7lz58aJJ55YNN34Sy1y/FsaQ6vdAaqvs7MzIiJaW1uLpre2tsaTTz5ZaDN8+PA45phjurU5+PswWJ2dnXHcccd1m37cccf1uc7uuOOOGD16dJx//vlF0y+66KKYPHlytLW1xaZNm+Kaa66JH/zgB7F69eqS9B0GWr+vec1r4g1veEOceOKJsXnz5njve98br3rVq2L9+vXR3Nxs/KUiSjH+/v73v49FixbFhRdeGGPGjClMN/5Sar/5zW9i//79PR67Hq5eOzs7e2z/hz/8IX7zm9/EhAkTDtvGWEspDaR+D/XRj340fve738WCBQsK004++eS4/fbbY9q0abFjx4742Mc+FmeccUb84Ac/KLo9EgzGQOp3woQJceutt8aMGTNiz549ceedd8ZZZ50V3/jGN+LMM8+MiMOP0cZfSmmw4+/WrVvjq1/9atx9991F042/1CrHv6UhPMmJxYsXx5IlS3pts27dujj11FMH/DeampqK/p9lWbdph+pLG+hr/UZ0r8OI/tXZZz7zmbjooou63V/00ksvLfx76tSpMWXKlDj11FPjkUceiVNOOaVP701jKnf9vvGNbyz8e+rUqXHqqafGiSeeGKtWreoWAvbnfSGicuPvvn374oILLogDBw7EJz7xiaLXjL+US3+PXXtqf+j0gRwPw0AMtNY+97nPxeLFi+NLX/pSUeh9+umnx+mnn174/xlnnBGnnHJK3HzzzfHxj3+8dB2H6F/9nnTSSXHSSScV/j9z5szYsmVLfOQjHymEJ/19TxiMgdba7bffHi94wQvi9a9/fdF04y+1zPHv4AlPcuLtb397XHDBBb22mTRp0oDeu62tLSKeTyQnTJhQmL5t27ZC+tjW1hZ79+6N7du3F539vG3btpg1a9aA/i6No6/1+8Mf/jB+9atfdXvt17/+dbckvCff+ta34vHHH4977rnniG1POeWUGDZsWPzsZz/z5R29qlT9HjRhwoQ48cQT42c/+1lEGH8ZnErU7759+2LBggWxefPm+PrXv1501UlPjL8M1vjx42PIkCHdzohLj10P1dbW1mP7oUOHxrhx43pt058xHI5kIPV70D333BOXXHJJfP7zn4+5c+f22vaoo46Kl7/85YXjCSiFwdRv6vTTT4+77rqr8H/jL5UwmPrNsiw+85nPxMKFC2P48OG9tjX+Uisc/5aGZ57kxPjx4+Pkk0/u9efQM+376uCtNNLbZ+zduzfWrFlT+GJuxowZMWzYsKI2W7dujU2bNvnyjiPqa/3OnDkzurq64nvf+17hd7/73e9GV1dXn+rstttuixkzZsTLXvayI7Z97LHHYt++fUWBIfSkUvV70G9/+9vYsmVLoTaNvwxGuev3YHDys5/9LB544IHCQXhvjL8M1vDhw2PGjBndbv22evXqw9brzJkzu7W///7749RTT41hw4b12sZYSykNpH4jnr/i5C1veUvcfffdce655x7x72RZFhs3bjTWUlIDrd9Dbdiwoag2jb9UwmDqd82aNfHzn/+8x2erHsr4S61w/FsilX5CPeX35JNPZhs2bMiWLFmS/cmf/Em2YcOGbMOGDdnOnTsLbU466aTs3nvvLfz/uuuuy1paWrJ77703e/TRR7M3velN2YQJE7IdO3YU2rz1rW/Njj/++OyBBx7IHnnkkexVr3pV9rKXvSz7wx/+UNH5o769+tWvzl760pdmDz/8cPbwww9n06ZNy+bPn1/U5tD6zbIs6+rqykaOHJndcsst3d7z5z//ebZkyZJs3bp12ebNm7NVq1ZlJ598cjZ9+nT1S0n1t3537tyZXXnlldnatWuzzZs3Zw8++GA2c+bM7E//9E+Nv1Rcf+t337592XnnnZcdf/zx2caNG7OtW7cWfvbs2ZNlmfGX8lmxYkU2bNiw7Lbbbst+9KMfZR0dHdmoUaOyJ554IsuyLFu0aFG2cOHCQvtf/OIX2ciRI7N3vetd2Y9+9KPstttuy4YNG5b953/+Z6HNt7/97WzIkCHZddddl/34xz/Orrvuumzo0KHZd77znYrPH/Wtv/V79913Z0OHDs3+9V//tWisffbZZwttFi9enN13333Z//7v/2YbNmzI/u7v/i4bOnRo9t3vfrfi80d962/93njjjdnKlSuzn/70p9mmTZuyRYsWZRGRfeELXyi0Mf5SKf2t34Pe/OY3Z6eddlqP72n8pVJ27txZ+I43IrIbbrgh27BhQ/bkk09mWeb4t1yEJ3Xo4osvziKi28+DDz5YaBMR2Wc/+9nC/w8cOJC9//3vz9ra2rLm5ubszDPPzB599NGi9929e3f29re/PRs7dmw2YsSIbP78+dlTTz1VobmiUfz2t7/NLrroomz06NHZ6NGjs4suuijbvn17UZtD6zfLsuxTn/pUNmLEiKIPkQc99dRT2ZlnnpmNHTs2Gz58ePZnf/Zn2Tve8Y7st7/9bRnnhEbU3/p97rnnsnnz5mXHHntsNmzYsOyEE07ILr744m5jq/GXSuhv/W7evLnH4430mMP4Szn967/+a3biiSdmw4cPz0455ZRszZo1hdcuvvjibPbs2UXtv/GNb2TTp0/Phg8fnk2aNKnHEy4+//nPZyeddFI2bNiw7OSTTy76cg9KqT/1O3v27B7H2osvvrjQpqOjIzvhhBOy4cOHZ8cee2w2b968bO3atRWcIxpJf+r3Qx/6UPZnf/Zn2dFHH50dc8wx2Ste8Yps1apV3d7T+Eul9Pf44dlnn81GjBiR3XrrrT2+n/GXSnnwwQd7PR5w/FseTVn2/z8pBgAAAAAAAM88AQAAAAAASAlPAAAAAAAAEsITAAAAAACAhPAEAAAAAAAgITwBAAAAAABICE8AAAAAAAASwhMAAAAAAICE8AQAAAAAACAhPAEAAAAAAEgITwAAAAAAABLCEwAAAAAAgMT/BwLMGh25bJEEAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x2 = np.random.uniform(-1,1,1000000)\n",
    "plt.figure(figsize=(20,10),dpi=100)\n",
    "plt.hist(x=x2,bins=1000)\n",
    "x2"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:54:55.133781Z",
     "start_time": "2024-08-20T11:54:54.020484Z"
    }
   },
   "id": "fe53db21b681f23e",
   "execution_count": 31
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 切片"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "5a0c224fd634d391"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([[[ 1,  2,  3],\n        [ 4,  5,  6]],\n\n       [[12,  3, 34],\n        [ 5,  6,  7]]])"
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a1 = np.array([ [[1,2,3],[4,5,6]], [[12,3,34],[5,6,7]]])\n",
    "a1"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:56:30.262254Z",
     "start_time": "2024-08-20T11:56:30.255271Z"
    }
   },
   "id": "257fca3e23cc0d2b",
   "execution_count": 33
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([5, 6, 7])"
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a1[1,1]"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T11:57:48.689750Z",
     "start_time": "2024-08-20T11:57:48.683444Z"
    }
   },
   "id": "a35a2ef43ee2e364",
   "execution_count": 40
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "(5, 4)"
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change.T.shape\n",
    "    "
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T12:02:38.412939Z",
     "start_time": "2024-08-20T12:02:38.405735Z"
    }
   },
   "id": "6c1ea2dfcd094595",
   "execution_count": 41
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "(2, 2, 3)"
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp = np.array([ [[1,2,3],[4,5,6]], [[12,3,34],[5,6,7]]])\n",
    "temp\n",
    "temp.shape"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T12:04:13.771665Z",
     "start_time": "2024-08-20T12:04:13.764817Z"
    }
   },
   "id": "ab5a5872715d875b",
   "execution_count": 46
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([ 1,  2,  3,  4,  5,  6,  7, 12, 34])"
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.unique(temp)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T12:03:56.790996Z",
     "start_time": "2024-08-20T12:03:56.777802Z"
    }
   },
   "id": "976f4d75388afaea",
   "execution_count": 45
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 数据的运算"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "e4ead3a41d01abf0"
  },
  {
   "cell_type": "code",
   "outputs": [],
   "source": [
    "score = np.random.randint(40,100,(10,5))\n",
    "score\n",
    "score.shape\n",
    "test = score[6,0:5]"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T12:07:14.156244Z",
     "start_time": "2024-08-20T12:07:14.150185Z"
    }
   },
   "id": "2b16fadc868ab49c",
   "execution_count": 48
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([74, 42, 63, 64, 66])"
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T12:07:16.786414Z",
     "start_time": "2024-08-20T12:07:16.771725Z"
    }
   },
   "id": "8d3d187580781d42",
   "execution_count": 49
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([ True, False, False, False, False])"
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test>=70"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T12:07:47.846859Z",
     "start_time": "2024-08-20T12:07:47.840214Z"
    }
   },
   "id": "43f0ff3d5f53c2f9",
   "execution_count": 52
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([[50,  1,  1, 58,  1],\n       [ 1,  1,  1, 55,  1],\n       [59,  1, 45,  1,  1],\n       [ 1, 45,  1,  1,  1],\n       [49,  1, 45, 58,  1],\n       [ 1,  1, 44, 44,  1],\n       [ 1, 42,  1,  1,  1],\n       [57,  1, 59, 43,  1],\n       [41,  1, 48,  1,  1],\n       [53,  1,  1,  1, 58]])"
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score[score>60]=1\n",
    "score"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T12:08:54.088855Z",
     "start_time": "2024-08-20T12:08:54.082366Z"
    }
   },
   "id": "94deed27ebfe1546",
   "execution_count": 56
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "False\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "print(np.all(score[0:2,:]>50))\n",
    "print(np.any(score[0:2,:]>50))\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T12:12:19.594840Z",
     "start_time": "2024-08-20T12:12:19.589473Z"
    }
   },
   "id": "3954445fb659006b",
   "execution_count": 62
  },
  {
   "cell_type": "markdown",
   "source": [
    "ax + by = c\n",
    "zx + dy = ddd\n",
    "求 x,y值\n",
    "[[a,b],[z,d]]*[[x],[y]] =[[c],[ddd]]\n"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "302f134164135903"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([[1.3],\n       [4.3]])"
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = np.array([[1,2],[4,5]])\n",
    "b = np.array([[0.7],[0.3]])\n",
    "np.matmul(a,b)\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T12:21:02.818770Z",
     "start_time": "2024-08-20T12:21:02.814691Z"
    }
   },
   "id": "e3d91090748e686e",
   "execution_count": 68
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "array([[1.3],\n       [4.3]])"
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.dot(a,b)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-20T12:21:27.424134Z",
     "start_time": "2024-08-20T12:21:27.409289Z"
    }
   },
   "id": "7ce243e2300f4055",
   "execution_count": 69
  },
  {
   "cell_type": "code",
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false
   },
   "id": "5f03a3339e746fe3"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
